package com.ydh.live.data.bus;

import android.arch.lifecycle.Observer;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.ydh.live.data.bus.util.v1.LiveDataBus;

/**
 * liveData V1 版本演示
 *
 * @author 13001
 */
public class Live1Activity extends AppCompatActivity implements View.OnClickListener {

    private static final String TAG = Live1Activity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_live1);

        LiveDataBus.get()
                .with("live1", String.class)
                .observe(this, new Observer<String>() {
                    @Override
                    public void onChanged(@Nullable String s) {
                        Log.e(TAG, "onChanged:   数据:" + s + "   线程:" + Thread.currentThread().getName());
                    }
                });

        LiveDataBus.get()
                .with("live1", String.class)
                .observe(this, new Observer<String>() {
                    @Override
                    public void onChanged(@Nullable String s) {
                        Log.e(TAG, "onChanged2:   数据:" + s + "   线程:" + Thread.currentThread().getName());
                    }
                });

        findViewById(R.id.bt_live_data_send).setOnClickListener(this);
        findViewById(R.id.bt_live_data_send_thread).setOnClickListener(this);
        findViewById(R.id.bt_live_data_send_aty).setOnClickListener(this);
    }

    /**
     * 1. 在主线程中直接发送（ .setValue() ） ；数据回调处为主线程
     * 2. 在子线程中直接发送（ .postValue() ） ；数据回调处为主线程
     * 3. 在当前 Activity 发送到下一个 Activity 中
     * <p>
     * 注意1；消息发送对数据格式敏感
     * 注意2：如果在当前界面注册了多个事件，每个回调都会处理
     *
     * @param v
     */
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.bt_live_data_send) {
            LiveDataBus.get().with("live1").setValue("1");
        } else if (v.getId() == R.id.bt_live_data_send_thread) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    LiveDataBus.get().with("live1").postValue("1");
                }
            }, "live1").start();
        } else if (v.getId() == R.id.bt_live_data_send_aty) {
            LiveDataBus.get().with("display_data").setValue("测试");
            startActivity(new Intent(this, DisplayDataActivity.class));
        }
    }
}
